import { Injectable, signal } from '@angular/core';

export interface Enum {
  id: string;
  name: string;
  values: string[];
}

@Injectable({
  providedIn: 'root'
})
export class EnumsService {
  private _enums = signal<Enum[]>([]);

  readonly enums = this._enums.asReadonly();

  addEnum(enumItem: Enum) {
    this._enums.update(enums => [...enums, enumItem]);
  }

  updateEnum(id: string, updates: Partial<Enum>) {
    this._enums.update(enums =>
      enums.map(enumItem =>
        enumItem.id === id ? { ...enumItem, ...updates } : enumItem
      )
    );
  }

  removeEnum(id: string) {
    this._enums.update(enums => enums.filter(enumItem => enumItem.id !== id));
  }

  clearEnums() {
    this._enums.set([]);
  }
}
